package controllo;

import grafica.ListaOstacoli;
import grafica.base.RettangoloBase;

import java.awt.event.KeyEvent;
import java.awt.event.KeyListener;
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;
import java.awt.event.MouseMotionListener;

import utils.BasicFileReader;
import vista.AlertDialog;

import modulo.Giocatore;
import modulo.ProxyListaGiocatori;


public class MuoviControllore implements MouseListener, MouseMotionListener,
		KeyListener {
	public static final	int su=KeyEvent.VK_W;
	public static final int giu=KeyEvent.VK_S;
	public static final int destra=KeyEvent.VK_D;
	public static final	 int sinistra=KeyEvent.VK_A;
	public static final int info=KeyEvent.VK_I;
	private AlertDialog alert;
	private ListaOstacoli ostacoli;
	private ProxyListaGiocatori giocatori;
	public MuoviControllore(ListaOstacoli ostacoli,ProxyListaGiocatori lista) {
		super();
		this.ostacoli=ostacoli;
		this.giocatori=lista;
	}
	public MuoviControllore(ListaOstacoli ostacoli,ProxyListaGiocatori lista,AlertDialog alert) {
		super();
		this.ostacoli=ostacoli;
		this.giocatori=lista;
		this.alert=alert;
	}
	@Override
	public void keyPressed(KeyEvent e) {

		Giocatore istanza=giocatori.getGiocatorePrincipale();
		/*e.getKeyChar()*/;//invece che il keyChar, di solito si preferisce
									  //usare il keyCode. KeyEvent possiede una serie
									  //di costanti (KEY_EVENT_A,KEY_EVENT_B.... etc.)
		int Y=istanza.getY();
		int X=istanza.getX();
		if (e.getKeyCode() == su&istanza.getY()>0) {//Usare delle Costanti il Prof
			Y--;
			//istanza.setY(Y);
		}
		if (e.getKeyCode() == giu&istanza.getY()<517) {//Usare delle Costanti il Prof
			Y++;
			//istanza.setY(Y);
		}
		if (e.getKeyCode() == destra&istanza.getX()<748) {//Usare delle Costanti il Prof
			X++;
		//	istanza.setX(X);
		}
		if (e.getKeyCode() == sinistra&istanza.getX()>0) {//Usare delle Costanti il Prof
			X --;
			//istanza.setX(X);
		}
		if(e.getKeyCode()==info){
			String temp = "";
			String a = "";
			BasicFileReader reader = new BasicFileReader("src/infoGioco");
			 while ((temp = reader.readLine()) != null) {
				 a += temp + "\n";
				 }
			alert.SetText(a);
			alert.setChiudiFinestra(false);
			alert.setVisible(true);
		}
		if(X>25&&Y>25&&ostacoli.ControlloPosizioneValida(new RettangoloBase(X-25, Y-25, 50, 50))&&giocatori.controlloPosizioneValida(new RettangoloBase(X-25, Y-25, 50, 50))){
			istanza.setX(X);
			istanza.setY(Y);
		}
		//System.out.println("y: "+Y);
		//System.out.println("x:" +X);
		//System.out.println(Y);

	}

	@Override
	public void keyTyped(KeyEvent e) {
			}

	@Override
	public void keyReleased(KeyEvent e) {

	}

	@Override
	public void mouseClicked(MouseEvent arg0) {
	}

	@Override
	public void mouseEntered(MouseEvent arg0) {
	}

	@Override
	public void mouseExited(MouseEvent arg0) {
	}

	@Override
	public void mouseMoved(MouseEvent arg0) {

	}
	@Override
	public void mousePressed(MouseEvent arg0) {

	}

	@Override
	public void mouseDragged(MouseEvent arg0) {
		

	}

	@Override
	public void mouseReleased(MouseEvent arg0) {
		

	}

}
